from flask import Blueprint,render_template,g,request
from app.model.Author import Author
from app.model.Poem import Poem
from sqlalchemy import or_

front=Blueprint('front',__name__,url_prefix='/front')

#下面的这个推荐只是顺序查找数据库而已
@front.route('/tui')
def first():#这个是推荐的代码
    poems=Poem.query.limit(7).all()
    auths=Author.query.with_entities(Author.name).limit(30).all()
    return render_template('front/first.html',poems=poems,auths=auths)

#这个和上面的推荐是一样的，因为作者水平有限，没能够完成推荐算法
@front.route('/shiwen')
def shiwen():
    poems = Poem.query.limit(7).all()
    auths = Author.query.with_entities(Author.name).limit(30).all()
    return render_template('front/first.html', poems=poems, auths=auths)

#这个是为了加载全数据库中的关于诗句作者的简介
@front.route('/author')
def author():
    auths=Author.query.limit(100).all()
    return render_template('front/author.html',auths=auths)

#以下的这个视图是为了做网站的声明
@front.route('/ours')
def ours():
    return render_template('front/ours.html')


#这个视图函数是为了在点击右边栏的作者那一栏目，那么会加载更多的关于作者的简介和诗
@front.route('/the_auth/<string:name>/',methods=['GET'])
def the_auth(name):
    auth=Author.query.filter_by(name=name).first()
    auths=Author.query.limit(30).all()
    poems = Poem.query.filter_by(auth=name).limit(7).all()
    return render_template('front/the_auth.html',auth=auth,auths=auths,poems=poems)


#下面的这个视图函数是为了加载更多的诗，也仅仅是加载跟多的几首诗而已
i=0
@front.route('/next/<string:point>')
def next(point):
    global i
    if  point=='front.next':
        i+=1
    else:
        i=2
    pn = Poem.query.limit(7 * i).all()
    pn = pn[-7:]
    auths = Author.query.with_entities(Author.name).all()
    return render_template('front/first.html',poems=pn,auths=auths)


#以下的这个是搜索的视图函数，但是一点都不健壮，没有对搜索词进行检测
@front.route('/search',methods=['GET','POST'])
def search():
    it=request.args.to_dict()
    print(it)
    value=it['search']
    all_poems = Poem.query.filter(
        or_(Poem.dynasty.like("%" + value + "%") if value is not None else "",
            Poem.name.like("%" + value + "%") if value is not None else "",
            Poem.auth.like("%" + value + "%") if value is not None else "",
            Poem.tags.like("%" + value + "%") if value is not None else "")
    ).all()
    all_auths=Author.query.filter(
        or_(Author.name.like("%" + value + "%") if value is not None else "")
    ).all()
    the_auths=Author.query.all()
    # print(the_auths)
    return render_template('front/search.html',auths=all_auths,poems=all_poems,the_auths=the_auths)


#这个视图函数是为了在诗人的列表页面上，加载更多的诗人
j=0
@front.route('/more_auths/<string:point>',methods=['GET'])
def more_auths(point):
    global j
    if point=='front.author':
        j=2
    else:
        j+=1
    print(request.path)
    auths = Author.query.all()
    the_auths=Author.query.limit(7*j).all()
    the_auths=the_auths[-7:]
    return render_template('front/more_auths.html', auths=auths,the_auths=the_auths)




#以下的这个视图函数是为了在选定某个诗人的情况下，进行加载这个诗人更多的诗
j=0
auth=None
@front.route('/the_auth_more_poems/<string:point>',methods=['GET'])
def the_auth_more_poems(point):
    global j,auth
    if point=='front.the_auth':
        j=2
    else:
        j+=1
    the_auth=request.args.get('auth')
    if the_auth!=None:
        auth=the_auth
    pn = Poem.query.filter_by(auth=auth).limit(7 * j).all()
    print(pn)
    print(j)
    pn=pn[-7:]
    auths = Author.query.with_entities(Author.name).limit(30).all()
    return render_template('front/the_auth_more.html', poems=pn,auths=auths)